mssql

推荐列表 站点导航

当前位置:首页 > 数据库 > mssql >

分享:在存储过程中使用另一个存储过程返回的查询结果集的方法

来源:网络整理  作者:网络  发布时间:2020-12-13 03:24
本篇文章介绍了,在存储过程中使用另一个存储过程返回的查询结果集的方法。需要的朋友参考下...
create proc sp_GetBorrowAnalysis
)

BookID int, --书籍ID
  使用这种方法的好处是可以避免编写重复的代码,并且利于维护。如果借书记录的查询条件发生变化,比如除了根据时间范围进行筛选,还需要根据借书卡是否有效,或所借书籍是否仍然存在等条件进行筛选,那么只需要维护sp_GetBorrowRecord存储过程即可,不需要将所有涉及到查询借书记录的存储过程全部修改一遍。但这种方法在查询的数据量较大的情况下比较影响性能,查询速度较慢,在数据量较小的情况下这种差异并不明显。


  如,存储过程sp_GetBorrowRecord @BeginTime,@EndTime 可以查询出某一时间范围(开始时间@BeginTime,结束时间@EndTime)内的所有借书记录。这个存储过程可以用于对借书记录的查询页面。

CardName varchar(100) --借书人姓名
declare @Record table
as
TypeID int, --书籍类别ID

--接下来,就可以像使用一个普通的表一样,对查出的数据(@Record中的数据)进行所需要的各项处理
@BeginTime datetime,
--建一个表变量,结构与sp_GetBorrowRecord查询出的结果集相同
exec sp_GetBorrowRecord @BeginTime,@EndTime

  很多查询类的存储过程会返回一个表结构的结果集,如果在其他存储过程中需要用到这个结果集,为了避免编写重复的sql脚本,可以直接使用前者的查询结果。

go
BookName varchar(100), --书籍名称
--。。。。。
--获取借书记录分析情况

现在需要实现另一个功能:将某时间段内的借书记录进行汇总分析。如按被借阅的类型进行分组,并按各类的借书总数进行排序。当然可以直接使用group by等方法直接重新进行查询,但为了说明本例,暂且用另一种方法进行实现,并且该方法也有其特有的优势(在文章最后会提到)。如下所示,建一个新的存储过程:

--获取这段时间内的借书记录,并存入@Record表变量中
(
CardID int --借书卡ID

注:需要在sql server2005或更高版本中使用,低版本的sql server不支持该方法。

复制代码 代码如下:

@EndTime datetime
insert into @Record

相关热词: 方法

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/mssql/3159.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

分享:在存储过程中使用另一个存储过程返回的查询结果集的方法

2020-12-13 编辑:网络

create proc sp_GetBorrowAnalysis
)

BookID int, --书籍ID
  使用这种方法的好处是可以避免编写重复的代码,并且利于维护。如果借书记录的查询条件发生变化,比如除了根据时间范围进行筛选,还需要根据借书卡是否有效,或所借书籍是否仍然存在等条件进行筛选,那么只需要维护sp_GetBorrowRecord存储过程即可,不需要将所有涉及到查询借书记录的存储过程全部修改一遍。但这种方法在查询的数据量较大的情况下比较影响性能,查询速度较慢,在数据量较小的情况下这种差异并不明显。


  如,存储过程sp_GetBorrowRecord @BeginTime,@EndTime 可以查询出某一时间范围(开始时间@BeginTime,结束时间@EndTime)内的所有借书记录。这个存储过程可以用于对借书记录的查询页面。

CardName varchar(100) --借书人姓名
declare @Record table
as
TypeID int, --书籍类别ID

--接下来,就可以像使用一个普通的表一样,对查出的数据(@Record中的数据)进行所需要的各项处理
@BeginTime datetime,
--建一个表变量,结构与sp_GetBorrowRecord查询出的结果集相同
exec sp_GetBorrowRecord @BeginTime,@EndTime

  很多查询类的存储过程会返回一个表结构的结果集,如果在其他存储过程中需要用到这个结果集,为了避免编写重复的sql脚本,可以直接使用前者的查询结果。

go
BookName varchar(100), --书籍名称
--。。。。。
--获取借书记录分析情况

现在需要实现另一个功能:将某时间段内的借书记录进行汇总分析。如按被借阅的类型进行分组,并按各类的借书总数进行排序。当然可以直接使用group by等方法直接重新进行查询,但为了说明本例,暂且用另一种方法进行实现,并且该方法也有其特有的优势(在文章最后会提到)。如下所示,建一个新的存储过程:

--获取这段时间内的借书记录,并存入@Record表变量中
(
CardID int --借书卡ID

注:需要在sql server2005或更高版本中使用,低版本的sql server不支持该方法。

复制代码 代码如下:

@EndTime datetime
insert into @Record

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/mssql/3159.shtml

相关文章

风云图片

推荐阅读

返回mssql频道首页